package com.hh.common.ibatis.dao;

import java.sql.SQLException;
import java.util.List;

/**
 * DB更新操作接口
 * @author 冯昌硕
 * @create 2012-12-17 下午11:22:54
 */
public interface IUpdateDao {

    /**
     * 更新记录
     * @param sqlId 要执行的SQLID
     * @param paramObj SQL执行参数
     * @return 执行结果，影响的行数
     * @throws SQLException
     * @create 2012-12-17 下午11:28:13
     */
    public int update(String sqlId, Object paramObj) throws SQLException;
    
    /**
     * 插入记录
     * @param sqlId 要执行的SQLID
     * @param paramObj SQL执行参数
     * @return 执行结果 The primary key of the newly inserted row.
     * @throws SQLException
     * @create 2012-12-23 下午3:39:57
     */
    public Object insert(String sqlId, Object paramObj) throws SQLException;
    
    /**
     * 删除记录
     * @param sqlId 要执行的SQLID
     * @param paramObj SQL执行参数
     * @return 删除影响行数
     * @throws SQLException
     * @create 2012-12-23 下午6:33:02
     */
    public int delete(String sqlId, Object paramObj) throws SQLException;
    
    /**
     * 批处理方式删除若干条记录
     * @param sqlId 执行删除的SQLID
     * @param paramObjArr 参数数组
     * @return
     * @throws SQLException
     * @create 2012-12-23 下午8:10:22
     */
    public int batchDelete(String sqlId, Object[] paramObjArr) throws SQLException;
    
    /**
     * 批处理方式删除若干条记录
     * @param sqlId 执行删除的SQLID
     * @param paramObjLst 参数集合
     * @return
     * @throws SQLException
     * @create 2012-12-23 下午8:50:39
     */
    public int batchDelete(String sqlId, List<Object> paramObjLst) throws SQLException;
    
    /**
     * 启动事务
     * @throws SQLException
     * @create 2013-2-7 上午11:15:00
     */
    public void startTransaction() throws SQLException;
    
    /**
     * 结束事务
     * @throws SQLException
     * @create 2013-2-7 上午11:16:42
     */
    public void endTransaction() throws SQLException;
    
    /**
     * 提交事务
     * @throws SQLException
     * @create 2013-2-7 上午11:18:56
     */
    public void commitTransaction() throws SQLException;
    
    /**
     * 开启批处理
     * @throws SQLException
     * @create 2013-2-9 下午5:17:47
     */
    public void startBatch() throws SQLException;
    
    /**
     * 执行批处理
     * @return
     * @throws SQLException
     * @create 2013-2-9 下午5:22:21
     */
    public int executeBatch() throws SQLException;
    
}
